package com.expand.learn.config;

import com.expand.learn.model.Person;
import org.springframework.format.Formatter;

import java.util.Locale;

/**
 * @author zhanghaidong
 * @version v1.0
 * @description 用于数据绑定 ServletModelAttributeMethodProcessor 实现了 HandlerMethodArgumentResolver
 *
 * Converter是一般工具, 可以将一种类型转换成另一种类型, 例如, 将String转换成Date, 或者Long转换成Date, Conveter既可以用在web层, 也可以用在其他层中,
 *  Formatter只能将String转换层另一种java类型, 例如, 将String转换成Date, 但它不可能将Long转换成Date类型,
 *  因此Formatter适用于web层, 因此, SpringMVC应用程序中, 选择Formatter比选择Converter更合适.
 *
 * @date 2020/2/26
 */
public class CustomizePersonFormatter implements Formatter<Person> {

    private static String MAO_HAO = ":";

    @Override
    public Person parse(String text, Locale locale) {
        System.out.println("1--formatter--parse");
        Person person = new Person();
        if (text.contains(MAO_HAO)) {
            // text = 张三:25
            final String[] split = text.split(MAO_HAO);
            person.setName(split[0]);
            person.setAge(Integer.valueOf(split[1]));
        }
        return person;
    }

    @Override
    public String print(Person object, Locale locale) {
        System.out.println("2--formatter--print");
        return object.toString();
    }
}
